home *** CD-ROM | disk | FTP | other *** search
/ Aminet 2 / Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso / Aminet / dev / misc / toolbox.lha / Toolbox / Test / REX / modula.c < prev    next >
Encoding:
Text File  |  1993-03-14  |  3.6 KB  |  116 lines

  1. GLOBAL    {
  2. int NestingLevel = 0;
  3.  
  4. void ErrorAttribute
  5. # if defined __STDC__ | defined __cplusplus
  6. (int Token, tScanAttribute * Attribute)
  7. # else
  8. (Token, Attribute) int Token; tScanAttribute Attribute;
  9. # endif
  10. { }
  11. }
  12.  
  13. DEFAULT    {
  14.    (void) printf ("%d, %d: illegal character: ",
  15.       Attribute.Position.Line, Attribute.Position.Column);
  16.    yyEcho;
  17.    (void) printf ("\n");
  18. }
  19.  
  20. EOF     { if (yyStartState == Comment) (void) printf ("unclosed comment\n"); }
  21.    
  22. DEFINE
  23.  
  24.    digit    = {0-9}        .
  25.    letter    = {a-z A-Z}    .
  26.    CmtCh    = - {*(\t\n}    .
  27.  
  28. START    Comment
  29.  
  30. RULES
  31.  
  32. #STD, Comment# "(*"     :- {++ NestingLevel; yyStart (Comment);}
  33. #Comment#  "*)"        :- {-- NestingLevel; if (NestingLevel == 0) yyStart (STD);}
  34. #Comment#  "(" | "*" | CmtCh + :- {}
  35.  
  36. #STD# digit +        ,
  37. #STD# digit + / ".."       : {return 1;}
  38. #STD# {0-7} + B            : {return 2;}
  39. #STD# {0-7} + C            : {return 3;}
  40. #STD# digit {0-9 A-F} * H : {return 4;}
  41. #STD# digit + "." digit * (E {+\-} ? digit +) ?    : {return 5;}
  42.  
  43. #STD# ' - {\n'} * '    |
  44.       \" - {\n"} * \"     : {return 6;}
  45.  
  46. #STD# "#"                  : {return 7;}
  47. #STD# "&"                  : {return 8;}
  48. #STD# "("                  : {return 9;}
  49. #STD# ")"                  : {return 10;}
  50. #STD# "*"                  : {return 11;}
  51. #STD# "+"                  : {return 12;}
  52. #STD# ","                  : {return 13;}
  53. #STD# "-"                  : {return 14;}
  54. #STD# "."                  : {return 15;}
  55. #STD# ".."                 : {return 16;}
  56. #STD# "/"                  : {return 17;}
  57. #STD# ":"                  : {return 18;}
  58. #STD# ":="                 : {return 19;}
  59. #STD# ";"                  : {return 20;}
  60. #STD# "<"                  : {return 21;}
  61. #STD# "<="                 : {return 22;}
  62. #STD# "<>"                 : {return 23;}
  63. #STD# "="                  : {return 24;}
  64. #STD# ">"                  : {return 25;}
  65. #STD# ">="                 : {return 26;}
  66. #STD# "["                  : {return 27;}
  67. #STD# "]"                  : {return 28;}
  68. #STD# "^"                  : {return 29;}
  69. #STD# "{"                  : {return 30;}
  70. #STD# "|"                  : {return 31;}
  71. #STD# "}"                  : {return 32;}
  72. #STD# "~"                  : {return 33;}
  73.  
  74. #STD# AND                  : {return 34;}
  75. #STD# ARRAY                : {return 35;}
  76. #STD# BEGIN               : {return 36;}
  77. #STD# BY                   : {return 37;}
  78. #STD# CASE                 : {return 38;}
  79. #STD# CONST                : {return 39;}
  80. #STD# DEFINITION           : {return 40;}
  81. #STD# DIV                  : {return 41;}
  82. #STD# DO                   : {return 42;}
  83. #STD# ELSE                 : {return 43;}
  84. #STD# ELSIF                : {return 44;}
  85. #STD# END                  : {return 45;}
  86. #STD# EXIT                 : {return 46;}
  87. #STD# EXPORT              : {return 47;}
  88. #STD# FOR                  : {return 48;}
  89. #STD# FROM                 : {return 49;}
  90. #STD# IF                   : {return 50;}
  91. #STD# IMPLEMENTATION       : {return 51;}
  92. #STD# IMPORT               : {return 52;}
  93. #STD# IN                   : {return 53;}
  94. #STD# LOOP                 : {return 54;}
  95. #STD# MOD                  : {return 55;}
  96. #STD# MODULE               : {return 56;}
  97. #STD# \NOT              : {return 57;}
  98. #STD# OF                   : {return 58;}
  99. #STD# OR                   : {return 59;}
  100. #STD# POINTER              : {return 60;}
  101. #STD# PROCEDURE            : {return 61;}
  102. #STD# QUALIFIED            : {return 62;}
  103. #STD# RECORD               : {return 63;}
  104. #STD# REPEAT               : {return 64;}
  105. #STD# RETURN               : {return 65;}
  106. #STD# SET                  : {return 66;}
  107. #STD# THEN                 : {return 67;}
  108. #STD# TO                   : {return 68;}
  109. #STD# TYPE                 : {return 69;}
  110. #STD# UNTIL                : {return 70;}
  111. #STD# VAR                  : {return 71;}
  112. #STD# WHILE                : {return 72;}
  113. #STD# WITH                 : {return 73;}
  114.  
  115. #STD# letter (letter | digit) *    : {return 74;}
  116.